package com.macro.mall.commission.service;

import com.github.pagehelper.Page;
import com.macro.mall.commission.domain.UserBalanceChange;
import com.macro.mall.commission.entity.UserBalanceChangeEntity;
import com.macro.mall.commission.service.bo.InsertUserBalanceChangeInput;
import com.macro.mall.commission.service.bo.PagedQueryUserBalanceChangeInput;
import com.macro.mall.commission.service.bo.UpdateUserBalanceChangeInput;

import java.util.List;

/**
 * 用户账户余额变更记录Service
 *
 * @author xuyanjun
 * @date 2019-12-11
 */
public interface UserBalanceChangeService {

    /**
     * 新增用户账户余额变更记录
     *
     * @param input input
     * @return 新增id
     */
    long insert(InsertUserBalanceChangeInput input);

    /**
     * 修改用户账户余额变更记录
     *
     * @param input input
     */
    void update(UpdateUserBalanceChangeInput input);

    /**
     * 删除用户账户余额变更记录
     *
     * @param id id
     */
    void delete(long id);

    /**
     * 根据Id获取用户账户余额变更记录
     *
     * @param id id
     * @return 用户账户余额变更记录
     */
    UserBalanceChangeEntity getById(long id);

    /**
     * 根据批量Id获取用户账户余额变更记录
     *
     * @param batchIds 批量ids
     * @return 用户账户余额变更记录集合
     */
    List<UserBalanceChangeEntity> listByBatchIds(List<Long> batchIds);

    /**
     * 分页查询
     *
     * @param input input
     * @return 分页的用户账户余额变更记录
     */
    Page<UserBalanceChangeEntity> pagedQuery(PagedQueryUserBalanceChangeInput input);

    /**
     * 将实体对象转换成domain对象
     *
     * @param userBalanceChangeEntity 实体
     * @return userBalanceChange
     */
    UserBalanceChange entityToDomain(UserBalanceChangeEntity userBalanceChangeEntity);

    /**
     * 将实体对象转换成domain对象
     *
     * @param userBalanceChangeEntities 实体
     * @return userBalanceChanges
     */
    List<UserBalanceChange> entityToDomain(List<UserBalanceChangeEntity> userBalanceChangeEntities);

}